package com.summer.filesync.model.manager;

import java.time.LocalDateTime;
import java.util.Map;

/** 文件系统统计 */
public class FileSystemStatistics {
  private long totalFiles;
  private long totalDirectories;
  private long totalSize;
  private long averageFileSize;
  private long largestFileSize;
  private long smallestFileSize;
  private Map<String, Integer> fileTypeDistribution;
  private Map<String, Long> sizeDistribution;
  private LocalDateTime lastUpdated;

  public FileSystemStatistics() {
    this.lastUpdated = LocalDateTime.now();
  }

  // Getters and Setters
  public long getTotalFiles() {
    return totalFiles;
  }

  public void setTotalFiles(long totalFiles) {
    this.totalFiles = totalFiles;
  }

  public long getTotalDirectories() {
    return totalDirectories;
  }

  public void setTotalDirectories(long totalDirectories) {
    this.totalDirectories = totalDirectories;
  }

  public long getTotalSize() {
    return totalSize;
  }

  public void setTotalSize(long totalSize) {
    this.totalSize = totalSize;
  }

  public long getAverageFileSize() {
    return averageFileSize;
  }

  public void setAverageFileSize(long averageFileSize) {
    this.averageFileSize = averageFileSize;
  }

  public long getLargestFileSize() {
    return largestFileSize;
  }

  public void setLargestFileSize(long largestFileSize) {
    this.largestFileSize = largestFileSize;
  }

  public long getSmallestFileSize() {
    return smallestFileSize;
  }

  public void setSmallestFileSize(long smallestFileSize) {
    this.smallestFileSize = smallestFileSize;
  }

  public Map<String, Integer> getFileTypeDistribution() {
    return fileTypeDistribution;
  }

  public void setFileTypeDistribution(Map<String, Integer> fileTypeDistribution) {
    this.fileTypeDistribution = fileTypeDistribution;
  }

  public Map<String, Long> getSizeDistribution() {
    return sizeDistribution;
  }

  public void setSizeDistribution(Map<String, Long> sizeDistribution) {
    this.sizeDistribution = sizeDistribution;
  }

  public LocalDateTime getLastUpdated() {
    return lastUpdated;
  }

  public void setLastUpdated(LocalDateTime lastUpdated) {
    this.lastUpdated = lastUpdated;
  }
}
